/**
 * 
 */
package com.yidu.drug.action;

import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.yidu.drug.common.Sector;
import com.yidu.drug.model.DrugManagerModel;
import com.yidu.drug.model.DrugProductionModel;
import com.yidu.drug.model.FinancialSheetsModel;
import com.yidu.drug.model.PoBreakdown;
import com.yidu.drug.model.ProductionModel;
import com.yidu.drug.model.PurchaseOrderModel;
import com.yidu.drug.model.SalesStatisticsModel;
import com.yidu.drug.service.FinancialSheetsService;
import com.yidu.drug.service.SalesStatisticsService;

/**
 * 销售统计Action
 * @author tanglei
 * @date 2018年8月27日 下午4:05:15
 * @version 1.0
 */
@Controller
@RequestMapping("/SalesStatistics")
public class SalesStatisticsAction {
	//注入销售统计Service
	@Resource
	private SalesStatisticsService salesStatisticsService;
	//注入财务Service
	@Resource
	private FinancialSheetsService financialSheetsService;
	
	/**
	 * 实现销售量折线统计图
	 * @param salesStatistics 传入一个销售统计对象
	 * @return 返回一个map集合
	 */
	@RequestMapping("/findAllSalesStatistics")
	@ResponseBody
	public Map<String,Object> findAllSalesStatistics(SalesStatisticsModel salesStatistics,String num,HttpSession session){
		//得到用户对象
		DrugManagerModel us = (DrugManagerModel) session.getAttribute("manager");
		salesStatistics.setFilId(us.getFilId());
		//调用销售统计Service里面的实现销量排行前十折线统计图的方法
		return salesStatisticsService.findAllSalesStatistics(salesStatistics,num);
	}
	
	/**
     * 查询每年月成本总金额和月纯利润 
     * @param record 传入一个销售统计对象
     * @return 返回一个集合
     */
	@RequestMapping("/findTotalCostAllPriceAndSalesProfit")
	@ResponseBody
	public Map<String,Object> findTotalCostAllPriceAndSalesProfit(SalesStatisticsModel salesStatistics,String num,HttpSession session){
		//得到用户对象
		DrugManagerModel us = (DrugManagerModel) session.getAttribute("manager");
		salesStatistics.setFilId(us.getFilId());
		//调用销售统计service查询每年月成本总金额和月纯利润 
		return salesStatisticsService.findTotalCostAllPriceAndSalesProfit(salesStatistics,num);
	}
	
	/**
    * 实现销售量排行前十的占年总销量的百分比扇形统计图
    * @param record 传入一个销售统计对象
    * @return 返回一个list集合
    */
	@RequestMapping("/findSumNumber")
	@ResponseBody
	public List<Sector> findYearSumNumber(SalesStatisticsModel salesStatistics,HttpSession session){
		//得到用户对象
		DrugManagerModel us = (DrugManagerModel) session.getAttribute("manager");
		salesStatistics.setFilId(us.getFilId());
		//调用销售统计service里面的实现销售量排行前十的占年总销量的百分比扇形统计图
		return salesStatisticsService.findYearSumNumber(salesStatistics);
	}
	
	/**
     * 查询今日或本月销量
     * @param record 传入一个销售统计对象
     * @return 返回一个销量的数量
     */
	@RequestMapping("/findTodaysSalesOrMonthSales")
	@ResponseBody
	public long findTodaysSalesOrMonthSales(SalesStatisticsModel salesStatistics,String num,HttpSession session){
		//得到用户对象
		DrugManagerModel us = (DrugManagerModel) session.getAttribute("manager");
		salesStatistics.setFilId(us.getFilId());
		//调用销售统计service里面的查询今日或本月销量
		return salesStatisticsService.findTodaysSalesOrMonthSales(salesStatistics,num);
	}
	
	/**
     * 查询今日收入或本月收入(纯收入)
     * @param record 传入一个销售统计对象
     * @return 返回一个收入的金额
     */
	@RequestMapping("/findTodaysIncomeOrMonthIncome")
	@ResponseBody
	public double findTodaysIncomeOrMonthIncome(SalesStatisticsModel salesStatistics,String num,HttpSession session){
		//得到用户对象
		DrugManagerModel us = (DrugManagerModel) session.getAttribute("manager");
		salesStatistics.setFilId(us.getFilId());
		//调用销售统计service里面的查询今日收入或本月收入的方法
		return salesStatisticsService.findTodaysIncomeOrMonthIncome(salesStatistics,num);
	}
	
	/**
	 * 查询财务总金额
	 * @param filId 传入一个分公司ID
	 * @return
	 */
	@RequestMapping("/findSumMoney")
	@ResponseBody
	public double findSumMoney(HttpSession session){
		//得到用户对象
		DrugManagerModel us = (DrugManagerModel) session.getAttribute("manager");
		return financialSheetsService.findSumMoney(us.getFilId());
	}
	
	/**
	 * 增加生生产计划单
	 * @param pro 传入一个生产计划单对象
	 * @param startTime 开始时间
	 * @param endTime 结束时间
	 * @return 返回一个map集合
	 */
	@RequestMapping("/addProduction")
	@ResponseBody
	public Map<String,Object> addProduction(ProductionModel pro, String startTime, String endTime){
		return salesStatisticsService.addProduction(pro, startTime, endTime);
	}
	
	/**
	 * 增加药品生产计划
	 * @param record 传入一个药品生产对象
	 * @return 返回一个影响的行数
	 */
	@RequestMapping("/addDrugProduction")
	@ResponseBody
	public Map<String,Object> addDrugProduction(DrugProductionModel record){
		return salesStatisticsService.addDrugProduction(record);
	}
	
	/**
	 * 删除药品生产计划
	 * @param drpId 传入一个药品生产计划ID
	 * @return 返回一个影响的行数
	 */
	@RequestMapping("/deleteDrugProduction")
	@ResponseBody
	public int deleteDrugProduction(String drpId){
		return salesStatisticsService.deleteDrugProduction(drpId);
	}
	
	/**
     * 根据生产计划ID查询
     * @param proId 传入一个生产计划ID
     * @return 返回一个生产计划对象
     */
	@RequestMapping("/findByProId")
	@ResponseBody
	public ProductionModel findByProId(String proId){
		return salesStatisticsService.findByProId(proId);
	}
	
	/**
	 * 增加采购订单
	 * @param purchaseOrderModel 传入一个采购订单对象
	 * @return 返回一个map集合
	 */
	@RequestMapping("/addPurchaseOrder")
	@ResponseBody
	public Map<String,Object> addPurchaseOrder(PurchaseOrderModel purchaseOrderModel){
		return salesStatisticsService.addPurchaseOrder(purchaseOrderModel);
	}
	
	/**
	 * 增加采购明细
	 * @param poBreakdown 传入一个采购明细对象
	 * @return 返回一个map集合
	 */
	@RequestMapping("/addPoBreakdown")
	@ResponseBody
	public Map<String,Object> addPoBreakdown(PoBreakdown poBreakdown){
		return salesStatisticsService.addPoBreakdown(poBreakdown);
	}
	
	/**
	 * 根据采购明细ID删除
	 * @param pobId 传入一个采购明细ID
	 * @return 返回一个影响的行数
	 */
	@RequestMapping("/deletePoBreakdown")
	@ResponseBody
	public int deletePoBreakdown(String pobId){
		return salesStatisticsService.deletePoBreakdown(pobId);
	}
	
	/**
	 * 根据采购订单ID查询
	 * @param poId 传入一个采购订单ID
	 * @return 返回一个采购订单对象
	 */
	@RequestMapping("/findByPoId")
	@ResponseBody
	public PurchaseOrderModel findByPoId(String poId){
		return salesStatisticsService.findByPoId(poId);
	}
	
	/**
	 * 根据生产计划ID查询药品生产计划
	 * @param proId 传入一个生产计划ID
	 * @return 返回一个list集合
	 */
	@RequestMapping("/findByProIds")
	@ResponseBody
	public List<DrugProductionModel> findByProIds(String proId){
		return salesStatisticsService.findByProIds(proId);
	}
	
	/**
	 * 根据采购ID查询采购明细数据
	 * @param poId 传入一个采购ID
	 * @return 返回一个影响的行数
	 */
	@RequestMapping("/findByPoIds")
	@ResponseBody
	public List<PoBreakdown> findByPoIds(String poId){
		return salesStatisticsService.findByPoIds(poId);
	};
}
